home *** CD-ROM | disk | FTP | other *** search
- package java.security;
-
- import [Ljava.security.Principal;;
- import java.util.ArrayList;
- import java.util.Enumeration;
- import sun.security.util.Debug;
- import sun.security.util.SecurityConstants;
-
- public class ProtectionDomain {
- private CodeSource codesource;
- private ClassLoader classloader;
- private Principal[] principals;
- private PermissionCollection permissions;
- private boolean hasAllPerm = false;
- private boolean staticPermissions;
- private static final Debug debug = Debug.getInstance("domain");
-
- public ProtectionDomain(CodeSource var1, PermissionCollection var2) {
- this.codesource = var1;
- if (var2 != null) {
- this.permissions = var2;
- this.permissions.setReadOnly();
- if (var2 instanceof Permissions && ((Permissions)var2).allPermission != null) {
- this.hasAllPerm = true;
- }
- }
-
- this.classloader = null;
- this.principals = new Principal[0];
- this.staticPermissions = true;
- }
-
- public ProtectionDomain(CodeSource var1, PermissionCollection var2, ClassLoader var3, Principal[] var4) {
- this.codesource = var1;
- if (var2 != null) {
- this.permissions = var2;
- this.permissions.setReadOnly();
- if (var2 instanceof Permissions && ((Permissions)var2).allPermission != null) {
- this.hasAllPerm = true;
- }
- }
-
- this.classloader = var3;
- this.principals = var4 != null ? (Principal[])((Principal[])((Principal;)var4).clone()) : new Principal[0];
- this.staticPermissions = false;
- }
-
- public final CodeSource getCodeSource() {
- return this.codesource;
- }
-
- public final ClassLoader getClassLoader() {
- return this.classloader;
- }
-
- public final Principal[] getPrincipals() {
- return (Principal[])this.principals.clone();
- }
-
- public final PermissionCollection getPermissions() {
- return this.permissions;
- }
-
- public boolean implies(Permission var1) {
- if (this.hasAllPerm) {
- return true;
- } else if (!this.staticPermissions && Policy.getPolicyNoCheck().implies(this, var1)) {
- return true;
- } else {
- return this.permissions != null ? this.permissions.implies(var1) : false;
- }
- }
-
- public String toString() {
- String var1 = "<no principals>";
- if (this.principals != null && this.principals.length > 0) {
- StringBuilder var2 = new StringBuilder("(principals ");
-
- for(int var3 = 0; var3 < this.principals.length; ++var3) {
- var2.append(this.principals[var3].getClass().getName() + " \"" + this.principals[var3].getName() + "\"");
- if (var3 < this.principals.length - 1) {
- var2.append(",\n");
- } else {
- var2.append(")\n");
- }
- }
-
- var1 = var2.toString();
- }
-
- PermissionCollection var4 = Policy.isSet() && seeAllp() ? this.mergePermissions() : this.getPermissions();
- return "ProtectionDomain " + this.codesource + "\n" + " " + this.classloader + "\n" + " " + var1 + "\n" + " " + var4 + "\n";
- }
-
- private static boolean seeAllp() {
- SecurityManager var0 = System.getSecurityManager();
- if (var0 == null) {
- return true;
- } else {
- if (debug != null) {
- if (var0.getClass().getClassLoader() == null && Policy.getPolicyNoCheck().getClass().getClassLoader() == null) {
- return true;
- }
- } else {
- try {
- var0.checkPermission(SecurityConstants.GET_POLICY_PERMISSION);
- return true;
- } catch (SecurityException var2) {
- }
- }
-
- return false;
- }
- }
-
- private PermissionCollection mergePermissions() {
- if (this.staticPermissions) {
- return this.permissions;
- } else {
- PermissionCollection var1 = (PermissionCollection)AccessController.doPrivileged(new 1(this));
- Permissions var2 = new Permissions();
- byte var3 = 32;
- int var4 = 8;
- ArrayList var6 = new ArrayList(var4);
- ArrayList var7 = new ArrayList(var3);
- if (this.permissions != null) {
- synchronized(this.permissions) {
- Enumeration var5 = this.permissions.elements();
-
- while(var5.hasMoreElements()) {
- Permission var9 = (Permission)var5.nextElement();
- var6.add(var9);
- }
- }
- }
-
- if (var1 != null) {
- synchronized(var1) {
- for(Enumeration var19 = var1.elements(); var19.hasMoreElements(); ++var4) {
- var7.add(var19.nextElement());
- }
- }
- }
-
- if (var1 != null && this.permissions != null) {
- synchronized(this.permissions) {
- Enumeration var20 = this.permissions.elements();
-
- while(var20.hasMoreElements()) {
- Permission var22 = (Permission)var20.nextElement();
- Class var10 = var22.getClass();
- String var11 = var22.getActions();
- String var12 = var22.getName();
-
- for(int var13 = 0; var13 < var7.size(); ++var13) {
- Permission var14 = (Permission)var7.get(var13);
- if (var10.isInstance(var14) && var12.equals(var14.getName()) && var11.equals(var14.getActions())) {
- var7.remove(var13);
- break;
- }
- }
- }
- }
- }
-
- if (var1 != null) {
- for(int var8 = var7.size() - 1; var8 >= 0; --var8) {
- var2.add((Permission)var7.get(var8));
- }
- }
-
- if (this.permissions != null) {
- for(int var21 = var6.size() - 1; var21 >= 0; --var21) {
- var2.add((Permission)var6.get(var21));
- }
- }
-
- return var2;
- }
- }
- }
-